/* 
 * File:   typesTiger.h
 * Author: Hadrien
 *
 * Created on 11 juillet 2012, 15:13
 */

#ifndef TYPESTIGER_H
#define	TYPESTIGER_H

class TigerAction {
public:
    enum Actions
    {
        open_left,
        open_right,
        listen
    };
    TigerAction();
    TigerAction(const int& v);
    virtual ~TigerAction();
    int index() const;
    Actions getValue() const;
    void setValue(const Actions& v);
    const static int size = 3;
private:
    Actions m_value;
};
class TigerState {
public:
    enum States
    {
        tiger_left,
        tiger_right
    };
    TigerState();
    TigerState(const int& v);
    virtual ~TigerState();
    int index() const;
    States getValue() const;
    void setValue(const States& v);
    const static int size = 2;
private:
    States m_value;
};

class TigerObservation {
public:
    enum Observations{
        hear_left,
        hear_right
    };
    TigerObservation();
    TigerObservation(const int& v);
    virtual ~TigerObservation();
    int index() const;
    Observations getValue() const;
    void setValue(const Observations &v);
    bool isFinal() const;
    void setFinal(const bool &final);
    const static int size = 2;
private:
    Observations m_value;
    bool m_final;
};

#endif	/* TYPESTIGER_H */

